#!/sbin/openrc-run
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

opts="${opts} reload fetch flush"

depend() {
	use net
}

processOpts() {
	local retVal=1

	DNETPATH="/opt/distributed.net"
	DNETBIN="${DNETPATH}/dnetc"

	STARTOPTS="--start --chuid dnetc:dnetc --quiet \
		--exec ${DNETBIN}"

	DNETOPTS="-quiet"

	if [ -e /etc/dnetc.ini ] ; then
		retVal=0
		DNETOPTS="${DNETOPTS} -ini /etc/dnetc.ini"
	elif [ -e ${DNETPATH}/dnetc.ini ]; then
		retVal=0
		DNETOPTS="${DNETOPTS} -ini ${DNETPATH}/dnetc.ini"
	elif [ ! -z ${EMAIL} ]; then
		retVal=0
	fi

	# override ini settings with values in /etc/conf.d/dnetc

	DNETOPTS="${DNETOPTS} ${EMAIL:+-e ${EMAIL}}"
	if [ ! -z ${BUFFER_BASE_DIR} ] ; then
		local buff_in="${BUFFER_BASE_DIR:+${BUFFER_BASE_DIR}/}buff-in"
		local buff_out="${BUFFER_BASE_DIR:+${BUFFER_BASE_DIR}/}buff-out"
		DNETOPTS="${DNETOPTS} -inbase ${buff_in}"
		DNETOPTS="${DNETOPTS} -outbase ${buff_out}"
	fi
	DNETOPTS="${DNETOPTS} ${KEYSERVER_ADDRESS:+-a ${KEYSERVER_ADDRESS}}"

	# fair group cpu scheduler
	uidpath="/sys/kernel/uids/`id -u dnetc`"
	[ -d $uidpath ] && echo 2 >$uidpath/cpu_share
	unset uidpath

	if [ ${retVal} -ne 0 ] ; then
		eerror "Need some sort of configuration.  Check /etc/conf.d/dnetc."
	fi

	return ${retVal}
}

start() {
	processOpts || return 1
	ebegin "Starting distributed.net client"
	start-stop-daemon ${STARTOPTS} -- ${DNETOPTS}
	eend ${?}
}

stop() {
	processOpts || return 1
	ebegin "Stopping distributed.net client"
	start-stop-daemon --stop --quiet --exec ${DNETBIN} --
	eend ${?}
}

reload() {
	processOpts || return 1
	ebegin "Reloading distributed.net client"
	start-stop-daemon --stop --quiet --signal HUP --exec ${DNETBIN}
	eend ${?}
}

fetch() {
	processOpts || return 1
	ebegin "Fetching distributed.net client buffers"
	${DNETBIN} ${DNETOPTS} -fetch
	eend ${?}
}

flush() {
	processOpts || return 1
	ebegin "Flushing distributed.net client buffers"
	${DNETBIN} ${DNETOPTS} -flush
	eend ${?}
}
